/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package com.objectcarpentry.kaylee;



import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Track</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link com.objectcarpentry.kaylee.Track#getTitle <em>Title</em>}</li>
 *   <li>{@link com.objectcarpentry.kaylee.Track#getArtist <em>Artist</em>}</li>
 *   <li>{@link com.objectcarpentry.kaylee.Track#getLocation <em>Location</em>}</li>
 *   <li>{@link com.objectcarpentry.kaylee.Track#getHash <em>Hash</em>}</li>
 * </ul>
 * </p>
 *
 * @see com.objectcarpentry.kaylee.KayleePackage#getTrack()
 * @model
 * @generated
 */
public interface Track extends Playable {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	String copyright = "Copyright 2009. Felix Dorner.\nThis code is licensed under the Eclipse Public License v1.0\nhttp://www.eclipse.org/org/documents/epl-v10.html";

	/**
	 * Returns the value of the '<em><b>Title</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Title</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Title</em>' attribute.
	 * @see #setTitle(String)
	 * @see com.objectcarpentry.kaylee.KayleePackage#getTrack_Title()
	 * @model unique="false"
	 * @generated
	 */
	String getTitle();

	/**
	 * Sets the value of the '{@link com.objectcarpentry.kaylee.Track#getTitle <em>Title</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Title</em>' attribute.
	 * @see #getTitle()
	 * @generated
	 */
	void setTitle(String value);

	/**
	 * Returns the value of the '<em><b>Artist</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Artist</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Artist</em>' attribute.
	 * @see #setArtist(String)
	 * @see com.objectcarpentry.kaylee.KayleePackage#getTrack_Artist()
	 * @model
	 * @generated
	 */
	String getArtist();

	/**
	 * Sets the value of the '{@link com.objectcarpentry.kaylee.Track#getArtist <em>Artist</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Artist</em>' attribute.
	 * @see #getArtist()
	 * @generated
	 */
	void setArtist(String value);

	/**
	 * Returns the value of the '<em><b>Location</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Location</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Location</em>' attribute.
	 * @see #setLocation(URI)
	 * @see com.objectcarpentry.kaylee.KayleePackage#getTrack_Location()
	 * @model dataType="com.objectcarpentry.kaylee.URI"
	 * @generated
	 */
	URI getLocation();

	/**
	 * Sets the value of the '{@link com.objectcarpentry.kaylee.Track#getLocation <em>Location</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Location</em>' attribute.
	 * @see #getLocation()
	 * @generated
	 */
	void setLocation(URI value);

	/**
	 * Returns the value of the '<em><b>Hash</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Hash</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Hash</em>' attribute.
	 * @see #setHash(byte[])
	 * @see com.objectcarpentry.kaylee.KayleePackage#getTrack_Hash()
	 * @model
	 * @generated
	 */
	byte[] getHash();

	/**
	 * Sets the value of the '{@link com.objectcarpentry.kaylee.Track#getHash <em>Hash</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Hash</em>' attribute.
	 * @see #getHash()
	 * @generated
	 */
	void setHash(byte[] value);

} // Track
